# Prompt:
# 我如何使用Python的请求库来做一个GET请求？
import requests

# EXAMPLE 1
# 导入 requests 库：首先导入 requests 库。
# 定义 get_request 函数：
# 使用 requests.get() 方法发送 GET 请求。
# 使用 raise_for_status() 方法检查响应状态码是否为 200，如果不是则抛出异常。
# 返回响应的内容（通常是文本形式）。
# 异常处理：
# 使用 try-except 结构来捕获可能出现的异常，例如网络问题、超时等。
# 如果出现异常，打印错误信息并返回 None。
#
def get_request(url):
    try:
        # 发送 GET 请求
        response = requests.get(url)
        
        # 检查响应状态码
        response.raise_for_status()  # 如果响应状态码不是 200，则抛出 HTTPError 异常
        
        # 返回响应内容
        return response.text
    
    except requests.exceptions.RequestException as e:
        # 处理请求异常
        print(f"请求失败: {e}")
        return None

# 使用示例
url = "https://api.example.com/data"
response_text = get_request(url)

if response_text:
    print(response_text)
else:
    print("请求失败")


# ENHANCED EXAMPLE2
# 设置请求头：可以通过 headers 参数设置请求头，例如 User-Agent 和 Authorization。
# 设置超时时间：通过 timeout 参数设置请求的超时时间，默认为 10 秒。
# 这样可以确保你的 GET 请求更加健壮和灵活。
import requests

def get_request(url, headers=None, timeout=10):
    try:
        # 设置请求头
        if headers is None:
            headers = {'User-Agent': 'Mozilla/5.0'}
        
        # 发送 GET 请求
        response = requests.get(url, headers=headers, timeout=timeout)
        
        # 检查响应状态码
        response.raise_for_status()
        
        # 返回响应内容
        return response.text
    
    except requests.exceptions.RequestException as e:
        # 处理请求异常
        print(f"请求失败: {e}")
        return None

# 使用示例
url = "https://api.example.com/data"
headers = {'Authorization': 'Bearer your_token_here'}
response_text = get_request(url, headers=headers)

if response_text:
    print(response_text)
else:
    print("请求失败")